package Modelo;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import Vista.VistaOrden;

public class Accion {

	
	VistaOrden vistaorden;
	public Accion() {
		super();
	}
//===============================CLIENTE================================================
	public void registrarCliente(Cliente cliente) {
		String tiraSQL = "INSERT INTO cliente "+
		 				 "(cedula,nombre,apellido,telefono,direccion) "+
		 				 "VALUES "+
		 				 "('"+cliente.getCedula()+"','"+cliente.getNombre()+"','"+cliente.getApellido()+"','"+cliente.getTelefono()+"','"+cliente.getDireccion()+"')";
		Conexion.ejecutar(tiraSQL);
	}
	public int compare(Object o1, Object o2) {
		return o1.toString().compareTo(o2.toString());
		}
	public boolean consultarCliente(String cedula) {
		boolean encontrado=false;
		String tiraSQL = "SELECT * FROM cliente ";
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		try {
			while (resultSet.next()) {
				System.out.println(resultSet.getString("cedula"));
				String ced = resultSet.getString("cedula");
				if(compare(ced,cedula)==0){
				encontrado=true;
				break;
				}
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return encontrado;
	}

	
	public Cliente ObtenerCliente(String cedula) {
		Cliente cliente = new Cliente();
		String tiraSQL = "SELECT * FROM cliente WHERE cedula='"+cedula+"' ";
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		try {
			while (resultSet.next()) {
				String ced = resultSet.getString("cedula");
				String nombre = resultSet.getString("nombre");
				String apellido = resultSet.getString("apellido");
				String telefono = resultSet.getString("telefono");
				String direccion = resultSet.getString("direccion");
				cliente = new Cliente(ced,nombre,apellido,telefono,direccion);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return cliente;
	}
	
	    public void modificarCliente(String ced,Cliente cliente) {
		String tiraSQL = "UPDATE cliente SET nombre='"+cliente.getNombre()+"',apellido='"+cliente.getApellido()+"',telefono='"+cliente.getTelefono()+"',direccion='"+cliente.getDireccion()+"' WHERE cedula='"+ced+"' ";
		Conexion.ejecutar(tiraSQL);		
	
	}
	    public void eliminarCliente(String ced) {
			String tiraSQL = "DELETE FROM cliente WHERE cedula='"+ced+"' ";
			Conexion.ejecutar(tiraSQL);		

	    }
		
//=============================CATEGORIA==============================================		
		public Vector<String> cargarCategoria() {
			Vector<String> categoria=new Vector<String>(); 
			String tiraSQL = "SELECT * FROM categoria ";
			ResultSet resultSet = Conexion.consultar(tiraSQL);		
			
				try {
					while (resultSet.next()) {
						categoria.add(resultSet.getString("nombre"));
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
			return categoria;
		}
		
		public void registrarCategoria(Categoria categoria) {
			String tiraSQL = "INSERT INTO categoria "+
			 				 "(codigo,nombre) "+
			 				 "VALUES "+
			 				 "('"+categoria.getCodCategoria()+"','"+categoria.getNombCategoria()+"')";
			Conexion.ejecutar(tiraSQL);
		}
		
		 public void modificarCategoria(String cod,Categoria categoria) {
				String tiraSQL = "UPDATE categoria SET nombre='"+categoria.getNombCategoria()+"' WHERE codigo='"+cod+"' ";
				Conexion.ejecutar(tiraSQL);		
			
			}
		 
		 public void eliminarCategoria(String cod) {
				String tiraSQL = "DELETE FROM categoria WHERE codigo='"+cod+"' ";
				Conexion.ejecutar(tiraSQL);		
			
			}
		 
		 public boolean consultarCategoria(String cod) {
				boolean encontrado=false;
				String tiraSQL = "SELECT * FROM categoria ";
				ResultSet resultSet = Conexion.consultar(tiraSQL);		
				try {
					while (resultSet.next()) {
						String codigo = resultSet.getString("codigo");
						if(compare(codigo,cod)==0){
						encontrado=true;
						break;
						}
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
				return encontrado;
			}
		 
		 public Categoria ObtenerCategoria(String cod) {
			    Categoria categoria = new Categoria();
				String tiraSQL = "SELECT * FROM categoria WHERE codigo='"+cod+"' ";
				ResultSet resultSet = Conexion.consultar(tiraSQL);		
				try {
					    resultSet.next();
						String codigo = resultSet.getString("codigo");
						String nombre = resultSet.getString("nombre");
						categoria = new Categoria(codigo,nombre);
					
				} catch (SQLException e) {
					e.printStackTrace();
				}
				return categoria;
			}
		 public String ObtenerCodCategoria(String nombre) {
			    String codigoCategoria="";
				String tiraSQL = "SELECT * FROM categoria WHERE nombre='"+nombre+"' ";
				ResultSet resultSet = Conexion.consultar(tiraSQL);		
				try {
					    resultSet.next();
						 codigoCategoria = resultSet.getString("codigo");
					
				} catch (SQLException e) {
					e.printStackTrace();
				}
				return codigoCategoria;
			}
		 
//============================PRODUCTO==================================================		 
		 public Vector<String> cargarProductos() {
				Vector<String> productos=new Vector<String>(); 
				String tiraSQL = "SELECT * FROM producto ";
				ResultSet resultSet = Conexion.consultar(tiraSQL);		
				
					try {
						while (resultSet.next()) {
							productos.add(resultSet.getString("nombre"));
						}
					} catch (SQLException e) {
						e.printStackTrace();
					}
				return productos;
			}
		 
		public void registrarProducto(Producto producto) {
			String tiraSQL = "INSERT INTO producto "+
			 				 "(codigo,nombre,categoria,precio) "+
			 				 "VALUES "+
			 				 "('"+producto.getCodigoProducto()+"','"+producto.getNombreProducto()+"','"+producto.getCategoria()+"','"+producto.getPrecio()+"')";
			Conexion.ejecutar(tiraSQL);
		}
		
		
		 public void modificarProducto(String cod,Producto producto) {
				String tiraSQL = "UPDATE producto SET nombre='"+producto.getNombreProducto()+"','"+producto.getCategoria()+"','"+producto.getPrecio()+"' WHERE codigo='"+cod+"' ";
				Conexion.ejecutar(tiraSQL);		
			
			}
		 
		 
		 public void modificarProducto(String cod,Ingrediente ingrediente) {
				String tiraSQL = "UPDATE ingrediente SET nombre='"+ingrediente.getNombreIngrediente()+"','"+ingrediente.getCantidad()+"' WHERE codigo='"+cod+"' ";
				Conexion.ejecutar(tiraSQL);		
			
			}
		 
		 public void eliminarProducto(String cod) {
				String tiraSQL = "DELETE FROM producto WHERE codigo='"+cod+"' ";
				Conexion.ejecutar(tiraSQL);		
			
			}
		 
		 public boolean consultarProducto(String cod) {
				boolean encontrado=false;
				String tiraSQL = "SELECT * FROM producto ";
				ResultSet resultSet = Conexion.consultar(tiraSQL);		
				try {
					while (resultSet.next()) {
						String codigo = resultSet.getString("codigo");
						if(compare(codigo,cod)==0){
						encontrado=true;
						break;
						}
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
				return encontrado;
			}
		 
		 public Producto ObtenerProducto(String cod) {
			    Producto producto = new Producto();
				String tiraSQL = "SELECT * FROM producto WHERE codigo='"+cod+"' ";
				ResultSet resultSet = Conexion.consultar(tiraSQL);		
				try {
					    resultSet.next();
						String codigo = resultSet.getString("codigo");
						String categoria = resultSet.getString("categoria");
						String nombre = resultSet.getString("nombre");
						float precio = resultSet.getFloat("precio");
						producto = new Producto(codigo,categoria,nombre,precio);
					
				} catch (SQLException e) {
					e.printStackTrace();
				}
				return producto;
			}
		 
		 public Vector<String> capturarDescripcionProducto() {
				Vector<String> productos = new Vector<String>();
				String tiraSQL = "SELECT * FROM producto";
				ResultSet resultSet = Conexion.consultar(tiraSQL);		
				try {
					    while(resultSet.next()){
						String nombre = resultSet.getString("nombre");
						productos.add(nombre);
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
				return productos;
			}
		 
		 public void registrarDetalleProd(Vector<IngredienteporProducto> detallesProducto){
			   String tiraSQL;
			   IngredienteporProducto detalle;
				for(int i=0;i< detallesProducto.size();i++){
					detalle=detallesProducto.elementAt(i);
					tiraSQL= "INSERT INTO ingredienteproducto VALUES('"+detalle.getCodproducto()+"','"+detalle.getCodingrediente()+"','"+detalle.getCantidadIngrediente()+"');";
					Conexion.ejecutar(tiraSQL);
				}
				
				
			}
		 
		 public String obtenerCodProducto(String nombre) {
			    String codigoProd="";
				String tiraSQL = "SELECT * FROM producto WHERE nombre='"+nombre+"' ";
				ResultSet resultSet = Conexion.consultar(tiraSQL);		
				try {
					    resultSet.next();
					    codigoProd = resultSet.getString("codigo");
					
				} catch (SQLException e) {
					e.printStackTrace();
				}
				return codigoProd;
			}
		 
		 

		 
		 
		 
		 
		 
//==============================INGREDIENTE===========================================		
		
		public Vector<String> cargarIngredientes() {
			Vector<String> ingredientes=new Vector<String>(); 
			String tiraSQL = "SELECT * FROM ingrediente ";
			ResultSet resultSet = Conexion.consultar(tiraSQL);		
			
				try {
					while (resultSet.next()) {
					 ingredientes.add(resultSet.getString("nombre"));
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
			return ingredientes;
		}
		
				 
		 public boolean consultarIngrediente(String cod) {
			   boolean encontrado=false;
			   String codigo;
				String tiraSQL = "SELECT * FROM ingrediente WHERE codigo='"+cod+"' ";
				ResultSet resultSet = Conexion.consultar(tiraSQL);		
				try {
					    while(resultSet.next()){
					    	codigo=resultSet.getString("codigo");
					if(codigo.equals(cod))
						encontrado=true;
					break;
					    }
				} catch (SQLException e) {
					e.printStackTrace();
				}
				return encontrado;
			}
		 
		 public Ingrediente ObtenerIngrediente(String cod) {
			    Ingrediente ingrediente = new Ingrediente();
				String tiraSQL = "SELECT * FROM ingrediente WHERE codigo='"+cod+"' ";
				ResultSet resultSet = Conexion.consultar(tiraSQL);		
				try {
					    resultSet.next();
						String codigo = resultSet.getString("codigo");
						String nombre = resultSet.getString("nombre");
						float cantidad = resultSet.getFloat("cantidad");
						ingrediente = new Ingrediente(codigo,nombre,cantidad);
					
				} catch (SQLException e) {
					e.printStackTrace();
				}
				return ingrediente;
			}
		 
		 public void registrarIngrediente(Ingrediente ingrediente) {
				String tiraSQL = "INSERT INTO ingrediente "+
				 				 "(codigo,nombre,cantidad) "+
				 				 "VALUES "+
				 				 "('"+ingrediente.getCodigoIngrediente()+"','"+ingrediente.getNombreIngrediente()+"','"+ingrediente.getCantidad()+"')";
				Conexion.ejecutar(tiraSQL);
			}
		 
		 public String obtenerCodIngrediente(String nombre) {
			    String codigoIngrediente="";
				String tiraSQL = "SELECT * FROM ingrediente WHERE nombre='"+nombre+"' ";
				ResultSet resultSet = Conexion.consultar(tiraSQL);		
				try {
					    resultSet.next();
						 codigoIngrediente = resultSet.getString("codigo");
					
				} catch (SQLException e) {
					e.printStackTrace();
				}
				return codigoIngrediente;
			}
		 
		
		 
		 
		
//===============================COMPRAS DE INGREDIENTES=================================		 
		 public void ActualizarExistencia(String codIngrediente,int cantidadCompra){
				float existencia=0;
				String tiraSQL = "SELECT * FROM ingrediente WHERE codigo='"+codIngrediente+"'";
				ResultSet resultSet =Conexion.consultar(tiraSQL);
				try {
					resultSet.next();
					existencia=resultSet.getFloat("cantidad");
			
					
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			
				tiraSQL = "UPDATE ingrediente SET cantidad='"+(existencia+cantidadCompra)+"' WHERE codigo='"+codIngrediente+"'";
		        Conexion.ejecutar(tiraSQL);
				
		        
		  }
		 
		 
//===================================ORDEN=======================================================		 
		 public void registrarDetalle(Vector<DetalleOrden> detallesOrden){
			   //String tiraSQL;
			DetalleOrden detalle;
			for(int i=0;i< detallesOrden.size();i++){
			  detalle=detallesOrden.elementAt(i);
			  String tiraSQL = "INSERT INTO detalleorden "+
	 				 "(codigoorden,codigoproducto,cantidad,preciounitario) "+
	 				 "VALUES "+
	 				 "('"+detalle.getCodOrden()+"','"+detalle.getCodProducto()+"','"+detalle.getCantidad()+"','"+detalle.getPrecioUnitario()+"')";
	Conexion.ejecutar(tiraSQL);
				}
				
				
			}
		 
		 public void registrarOrden(Orden orden) {
				String tiraSQL = "INSERT INTO orden"+"(codigoorden,cedula,fecha,montototal)"+
				"VALUES"+"('"+orden.getCodigoOrden()+"','"+orden.getCedula()+"','"+orden.getFecha()+"','"+orden.getMontoTotal()+"')";
				                                      
			  Conexion.ejecutar(tiraSQL);
			}
		 
		 
		 public String obtenerCodProdDetalle(String nombre) {
			 String codigoProdDetalle="";
			    nombre=vistaorden.cmbProductos.getSelectedItem().toString();
				String tiraSQL = "SELECT * FROM detalleorden WHERE nombre='"+nombre+"' ";
				ResultSet resultSet = Conexion.consultar(tiraSQL);		
				try {
					    resultSet.next();
					    codigoProdDetalle = resultSet.getString("codigo");
					
				} catch (SQLException e) {
					e.printStackTrace();
				}
				return codigoProdDetalle;
			}
			
		
		
		
		
		 
		 
		
		
	    
}
	
